''' 课后作业
- 新建文件 `第二周_第二节tmp.py` 完成上面关于字符串CRUD的操作实践, 并附上返回结果, 格式如下

```
'a' + 'b'
'ab'
```

- 完成对字符串格式化的实践, 按上述格式

```
city = 'shanghai'
f"{city}-tunan"
shanghai-tuann
```

- 读取当前`第二周_第二节tmp.py`并写入到新文件中`第二周_第二节.py`, 上传到码云.
'''
# (1) 字符串CRUD的操作实践

# 任意创建一个字符串来对其进行 CRUD 操作
base_str = "Do not forget the beginner's mind, and you will reach the bright end."

# 字符串的增加
str_to_add_head = '这是一句英文: '

# 将两个字符串拼接在一起, 返回一个新的字符串
now_str = str_to_add_head + base_str
print(now_str)
# 运行结果:
# 这是一句英文: Do not forget the beginner's mind, and you will reach the bright end.

# 字符串的索引
# 字符串中的每个元素均为一个字符
# 获取字符串中的第一个元素
first_one = base_str[0]    # 同理, base_str[1] 是获取第二个元素, ...
print(first_one)
# 运行结果:
# D

# 获取字符串中的最后一个元素
last_one = base_str[-1]   # 同理, base_str[-2] 是获取倒数第二个元素 ...
print(last_one)
# 运行结果:
# .

# 字符串的分片
# 截取字符串的第 4 到 9 (包括 4 不包括 9 )的分片
part_str_1 = base_str[4: 9]
print(part_str_1)
# 运行结果:
# ot fo
# 注意: 一个空格也是一个字符

# 步长取字符
length = len(base_str)   # 拿到字符串中字符的总个数
print(length)    # 运行结果: 69
step_str_1 = base_str[1: 60: 2]
print(step_str_1)    # 从索引为 1 的字符开始（索引为1是第二个字符，从0开始计数）， 每隔 2 个字符取一个字符，直到索引小于 60 的最后一个
# 运行结果:
# ontfre h einrsmn,adyuwl ec h r

# 字符串的更新
# 字符串不支持直接的在原字符串上的更新操作
try:
    base_str[0] = "d"
except Exception as e:
    print(e)    # 'str' object does not support item assignment

# 如果想将字符串的第一个字符改为 'd' , 需要通过拼接的方式创建新的字符串
new_str = 'd' + base_str[1:]
print(new_str)
# 运行结果:
# do not forget the beginner's mind, and you will reach the bright end.

# 字符串的删除
# 字符串属于不可变对象，字符串删除元素的本质是创建了新的字符串 但是字符串本身并没有改变
# 删除字符串最左的一个或者几个字符
new_str_1 = base_str.lstrip('Do not ')
print(new_str_1)
print(base_str)
# 运行结果:
# forget the beginner's mind, and you will reach the bright end.
# Do not forget the beginner's mind, and you will reach the bright end.

# 同理, 删除字符串最右边的一个或者几个字符
new_str_2 = base_str.rstrip('end.')
print(new_str_2)
print(base_str)

# 在不输入参数时 lstrip() rstrip() strip() 表示删除最左、最右、最左和最右的全部空格
test_str = '     fu  ruiyang  '
left_clear_str = test_str.lstrip()
print(left_clear_str)    # 去掉左边的空格
right_clear_str = test_str.rstrip()
print(right_clear_str)   # 去掉右边的空格
clear_all_str = test_str.strip()    # 去掉两边的空格
print(clear_all_str)

# (2) 字符串格式化的实践
# 按传入参数的默认顺序
str1 = "{} {}".format("hello", "world")
print(str1)
# 按指定参数索引 'hello'是第0个参数 就填入0的位置;  'world'是1个参数 就填入1的位置
str2 = "{0} {1}".format("hello", "world")
print(str2)
str3 = "{1} {0} {1}".format("hello", "world")
print(str3)
# 按照关键词参数
print("网站名：{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))
# 按变量
name = "菜鸟教程"
url = "www.runoob.com"
str4 = f"网站名：{name}, 地址 {url}"
print(str4)
city = 'shanghai'
str5 = f"{city}-tunan"
print(str5)
# 处理浮点数
pi = "{:.2f}".format(3.141592)
print(pi)

# (3) 读写文件
temp_file = open("week2_section2_tmp.py", 'r', encoding='utf8')
content = temp_file.read()
temp_file.close()

write_file = open("week2_section2.py", 'w', encoding='utf8')
write_file.write(content)
write_file.close()
